package com.wx.service;

import com.github.pagehelper.PageInfo;
import com.wx.common.PageParam;
import com.wx.domain.dto.DayReportQueryParam;
import com.wx.domain.dto.SysPatientFollowDto;
import com.wx.domain.vo.*;
import com.wx.entity.SysPatientFollow;

import java.util.Date;
import java.util.List;

/**
 * <p>Title:      SysPatientFollowService. </p>
 * <p>Description TODO </p>
 * <p>Copyright: Copyright (c) 2016</p>
 * <p>Company:    医百科技有限公司 </p>
 *
 * @author         <a href="yangwensheng@100doc.com.cn"/>杨文生</a>
 * @since      2021/3/27 21:39
 */
public interface SysPatientFollowService extends BaseService<SysPatientFollow>{

    void fistFollowPatient(SysPatientFollow sysPatientFollow, String openid, String nickname);

    PageInfo<PatientFollowVo> listPage(PageParam<SysPatientFollow> param, String openId);

    PageInfo<PatientFollowVo> currentMonthListPage(PageParam<SysPatientFollow> pageParam, String openId);

    List<PatientFollowVo> listPageByPatientId(SysPatientFollow sysPatientFollow);

    int deletePatientFollow(String id, String userId ,String userName);

    void addPatientFollowLog(SysPatientFollow sysPatientFollow);

    List<EveryDayFollowNumber> queryEveryDayFollowNumber(String openid, Date followTime);

    List<PatientFollowVo> listAllPage(SysPatientFollowDto pageParam);

    String queryNextFollowTimeByPatientId(String patientId);

    Long queryCurrentDayFollowCount(List<String> patientList);

    int updateFollow(SysPatientFollow sysPatientFollow);

    int addPatientInquiry(SysPatientFollow sysPatientFollow);

    void remind();

    List<PatientFollowDetailVo> listAllDetail(SysPatientFollowDto sysPatientFollow);

    List<PatientInquiryDetailVo> listInquiryDetail(SysPatientFollowDto sysPatientFollow);

    List<PatientFollowVo> listByPatientId(String patientId);

    void refresh(List<String> patientIds);

    List<PrescriptionStatisticsVo> exportPrescriptionStatistics(DayReportQueryParam dayReportQueryParam);

    List<FollowStatistics> exportStatistics(DayReportQueryParam dayReportQueryParam);

    List<SysPatientFollow> getLastTwoFollow(String patientId);

    int updateInfo(SysPatientFollow sysPatientFollow);

    List<PatientFollowDetailVo> multiThreadQueryDetail(SysPatientFollowDto sysPatientFollow) throws Exception;

    void deletePatientFollowByPatientId(String patientId);
}
